这个问题应该有很多人碰到吧?配合手机和app将短信提交到服务器,然后开放出来供各位网友们使用,那么肯定是收费的,也可能会有无私的网友免费共享出来。
前段时间,抓数据的时候就用到了短信验证码,找到一个 免费站点。
网站上大约一百多个短信接收号码,如果你还需要大量的,那么这里不适合你了,建议找个收费的测试下。
下边是使用,都是代码,简单记录,仅供参考。
依赖 async axios cheerio sqlquery-tool
//自动抓取网站上的可用手机号码并进行存储 更新
let startPage = 1;
let url = https://www.pdflibr.com/?page=
let host = https://www.pdflibr.com
;
let axios = require('axios');
let cheerio = require('cheerio');
let async = require('async');
let query = require('sqlquery-tool'); let log = require('../util/log');
//抓取单页手机号码 function fetch(url){ return axios.get(url) .then(rs=>{ let html = rs.data; let $ = cheerio.load(html); //查找是否存在手机列表信息 let $sms = $('.sms_content'); if($sms.find('.sms-number-list.row.show-grid').length == 0){//没有数据 return null; }else{ //找到符合条件的手机号码和地址信息 let phoneList = []; let $list = $sms.find('.sms-number-list.row.show-grid'); $list.each((i,item)=>{ const isChina = $(item).find('picture img').attr('src').indexOf('china') > -1; const phoneNo = $(item).find('.number-list-phone_number h3').text().replace('+86',''); const isUse = $(item).find('.number-list-info').html().trim() == '' || $(item).find('.number-list-info p:nth-child(2)').text().indexOf('小时') > -1 ? false : true; const phoneUrl = host + $(item).find('.sms-number-read a').attr('href'); if(isChina && isUse){ phoneList.push({ phoneNo : phoneNo, phoneUrl : phoneUrl }); } }) return phoneList; } }) }
async function start(){
//执行获取,从第一个开始,一直增加
try{
let startGo = true;
let allArr = [];
while(startGo){
let phoneList = await fetch(url+startPage);
console.log(phoneList);
if(phoneList == null){
startGo = false;
}else{
//添加
startPage ++ ;
allArr = allArr.concat(phoneList);
}
}
//直到所有的页面全部抓完
//开始进行更新/或插入/等等
for(let info of allArr){
let hasList = await query.search('phonelist').where({phoneNo : info.phoneNo}).list();
if(hasList == null || hasList.length == 0){
let rs = await query.search('phonelist').insert(info);
}
}
}catch(e){
console.log(e);
log('手机号码',抓取失败:${e||'无'}
)
}
}
module.exports = start; 根据手机号查找验证码
依赖 sqlquery-tool axios cheerio //获取短信验证码 let query = require('sqlquery-tool'); let axios = require('axios'); let cheerio = require('cheerio'); let log = require('../util/log');
module.exports = function(phone,datetime){ return query.search('phonelist').where({ phoneNo : phone }).list() .then(rs=>{ let pageUrl = rs[0].phoneUrl; return axios.get(pageUrl); }) .then(rs=>{ let html = rs.data; let $ = cheerio.load(html); let txtArr = []; $('.sms_content:nth-child(4) table tr').each(function(i,item){ var itemText = $(item).find('td:nth-child(3)').text(); var timestr = $(item).find('td:nth-child(4)').text();
let d = new Date(timestr.trim());
let time = d.getTime();
if(datetime < time){
txtArr.push({
txt : itemText,
time : d.getTime()
});
}
})
//查找是否存在
var phoneCode = '',getRs = false;
for(let i=0;i<txtArr.length;i++){
let txt = txtArr[i].txt;
let time = txtArr[i].time;
if(txt != '' && txt.indexOf('关键词A') > -1 && txt.indexOf('关键词B') > -1 ){
phoneCode = txt.trim().substring(txt.trim().length - 6);
getRs = true;
log('短信验证码',`获得短信验证码:${phoneCode}`)
break;
}
}
return {
success : getRs,
result : phoneCode
}
})
} 最近的文章确实凑活 ,一直再忙,有空在细细研究。望网友们见谅。
转载请注明出处: http://sdxlp.cn/article/在线短信 短信验证.html